package com.rajaev.dtu.tractor.app.service;


import com.github.pagehelper.PageInfo;
import com.rajaev.dtu.tractor.domain.vo.*;
import org.apache.ibatis.annotations.Param;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;

/**
 * @Created with IDEA
 * @author: tianjie
 * @Date:2019/4/8
 * @Time:17:39
 */
public interface FaultService {


    /**
     * 查询所有电池的故障列表
     * @param pageSize 分页条数
     * @param pageNum 页号
     * @param vin vin号
     * @return
     */
    PageInfo<FaultVo> selectFaults(HttpServletRequest request, Integer pageSize, Integer pageNum, String vin);

    /**
     * 查询所有的为结束的故障信息
     */
    List<FaultDetailVo> selectAllNotOveredFault();

    List<FaultDetailVo> selectNotOveredFault(String vin);


    /**
     * 新增一条故障记录
     * @param batteryId
     * @param faultCode
     * @param happenTime
     */
    void addFaultRecord(Integer batteryId,int  faultCode,Date happenTime);




    /**
     * 根据用户，查询该用户下的所有的电池的报警统计数据
     * @param userId
     * @return
     */
    BatteryFaultStatisticVo queryBatteryFaultStatisticVo(Integer userId, Date searchBegin, Date searchEnd);

    /**
     *查询用户所在车队的故障电池车数量
     * @param userId  用户id
     * @return
     */
    Integer selectFaultNumber(Integer userId);

    /**
     * 查询车辆的告警看板显示信息
     * @param pageSize
     * @param pageNum
     * @return
     */
    PageInfo<BatteryFaultWarmInfo> selectBatteryWarnInfos(HttpServletRequest request,Integer pageSize, Integer pageNum) ;


    void setFaultReset(List<FaultDetailVo> faultDetailVos);

    /**
     * 根据vin查询单个电池的故障详情列表
     * @param pageSize
     * @param pageNum
     * @param vinOrPlateNo vin 或者车牌号
     * @return
     */
    PageInfo<FaultDetailVo> selectFaultDetail(Integer pageSize, Integer pageNum, String vinOrPlateNo, Integer faultLevel, Date searchBegin,Date searchEnd);



    /**
     * 分页查询
     * @param pageSize
     * @param pageNum
     * @param faultDesc
     * @param faultCode
     * @return
     */
    PageInfo<FaultItemVo>  pageQueryFaultItems(Integer pageSize, Integer pageNum, String faultDesc, String faultCode);


    /**
     * 修改故障信息
     * @param faultItemVo
     */
    void updateFaultItem(FaultItemVo faultItemVo);
}
